﻿using System;
using System.Reflection;

namespace LeRenard.Core.Versioning
{
    /// <summary>
    /// Defines version information for an <see cref="Assembly"/>.
    /// </summary>
    public interface IAssemblyVersion
    {
        /// <summary>
        /// Gets the subject <see cref="Assembly"/> the <see cref="IAssemblyVersion"/> is based on.
        /// </summary>
        Assembly Assembly { get; }

        /// <summary>
        /// Gets the major version number.
        /// </summary>
        int Major { get; }

        /// <summary>
        /// Gets the minor version number.
        /// </summary>
        int Minor { get; }

        /// <summary>
        /// Gets the build version number.
        /// </summary>
        int Build { get; }

        /// <summary>
        /// Gets the <see cref="DateTime"/> when the assembly was built, if available.
        /// </summary>
        DateTime? BuildTimestamp { get; }
    }
}
